package ik.xcj.hostpital.manage.service;

import com.github.pagehelper.PageInfo;
import ik.xcj.hostpital.manage.pojo.dto.PatientAddNewDTO;
import ik.xcj.hostpital.manage.pojo.dto.PatientUpdateDTO;
import ik.xcj.hostpital.manage.pojo.vo.PatientListItemVO;
import ik.xcj.hostpital.manage.pojo.vo.PatientStandardVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 处理就诊人数据的业务接口
 *
 * @author ik.xcj
 * @version 0.0.1
 */
@Transactional
public interface IPatientService {

    /**
     * 添加就诊人数据
     *
     * @param patientAddNewDTO 新的就诊人数据
     */
    void addNew(PatientAddNewDTO patientAddNewDTO);

    /**
     * 根据id删除就诊人
     *
     * @param id 就诊人id
     */
    void delete(Long id);

    /**
     * 修改就诊人详情
     *
     * @param id             被修改的就诊人id
     * @param patientUpdateDTO 封装了新数据的对象
     */
    void updateInfoById(Long id, PatientUpdateDTO patientUpdateDTO);

    /**
     * 根据就诊人id查询就诊人详情
     *
     * @param id 就诊人id
     * @return 匹配的就诊人详情，如果没有匹配的数据，将抛出异常
     */
    PatientStandardVO getStandardById(Long id);

    /**
     * 分页查询就诊人数据列表
     *
     * @return 就诊人数据列表
     */
    PageInfo<PatientListItemVO> list(Integer page,Integer pageSize);
}
